import java.util.*;
public class test {
    /*给你一个整数数组 cards ，其中 cards[i] 表示第 i 张卡牌的 值 。
    如果两张卡牌的值相同，则认为这一对卡牌 匹配 。
    返回你必须拿起的最小连续卡牌数，以使在拿起的卡牌中有一对匹配的卡牌。
    如果无法得到一对匹配的卡牌，返回 -1 。*/
    public static int check(int[] card){
        Map<Integer,Integer> map=new HashMap<>();
        int res=Integer.MAX_VALUE;
        for(int i=0;i<card.length;i++){
            if (map.containsKey(card[i])) {
                res=Math.min(res,i-map.get(card[i])+1);
            }
            map.put(card[i],i);
        }
        return res==Integer.MAX_VALUE?-1:res;
    }
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] card=new int[n];
        for(int i=0;i<n;i++){
            card[i]=sc.nextInt();
        }
        int count=check(card);
        System.out.println(count);
    }
}
